import java.io.Serializable;
import java.util.HashMap;

public class Article extends Document implements Serializable {

	// ************************************************************************************************************
	// Constantes
	// ************************************************************************************************************

	private static final long serialVersionUID = 1L;
	
	// ************************************************************************************************************
	// Attributs
	// ************************************************************************************************************

	private Integer _idArticle;	
	private String _pageDebut;
	private Parution _parution;
	private Auteur[] _auteur;
	private HashMap<Integer,Auteur> _hashAuteur;
	
	// ************************************************************************************************************
	// Constructeur
	// ************************************************************************************************************

	/**
	 * Constructeur. 
	 * @param issn			numero ISSN du periodique
	 * @param nom			nom du periodique	 
	 */
	public Article(Integer idArticle, String titre,String pageDebut,Parution parution,Auteur[] auteur) {
		super(titre);
		this.setParution(parution);
		this.setIdArticle(idArticle);
		this.setPageDebut(pageDebut);	
		this.setAuteur(auteur, new HashMap<Integer,Auteur>());
		
	} // Fin Constructeur

	// ************************************************************************************************************
	// Méthodes privées
	// ************************************************************************************************************
	
	// ------------------------------------------------------------------------------------------------------------
	// Affecteurs	
	
	/**
	 * setter de l'attribut num d'ISSN.
	 * @param isbn valeur à affecter à l'ISBN de l'ouvrage
	 */
	public void setIdArticle(Integer idArticle) {
		this._idArticle = idArticle;
	}
	public void setAuteur(Auteur[] auteur, HashMap<Integer,Auteur> auteurs){
		this._auteur = auteur;		
		
		for(int i=0;i<auteur.length;i++){						
			auteurs.put(auteurs.size(), auteur[i]);
			
			}
		//_hashAuteur=auteurs;
		super.setAuteurs(auteurs);
	}
	
	/**
	 * setter de l'attribut nom.
	 * @param nom valeur à affecter au nom du peridioque
	 */
	public void setPageDebut(String pageDebut){
		this._pageDebut = pageDebut;
	}	
	public void setParution(Parution parution){
		_parution = parution;
	}
		
	public void notifierObservateurs() {
		this.setChanged();
		this.notifyObservers();	
	}
	
	// ************************************************************************************************************
	// Méthodes publiques
	// ************************************************************************************************************

	// ------------------------------------------------------------------------------------------------------------
	// Accesseurs
	
	/**
	 * Getter de l'ISBN.
	 * @return ISBN de l'ouvrage
	 */
	public Integer getIdArticle() {
		return _idArticle;
	}

	/**
	 * Getter du titre.
	 * @return titre de l'ouvrage
	 */
	public String getPageDebut() {
		return _pageDebut;
	}	
	
	public Parution getParution(){
		return _parution;
	}
	public Auteur[] getAuteur(){		
		return _auteur;
	}
	public HashMap<Integer,Auteur> getHashAuteur(){
		return _hashAuteur;
	}
} // Fin Classe Ouvrage

